// 定义购物车相关的接口
import request from '@/utils/request'

/**
 * 获取商品的最新价格、库存、是否有效
 * @param {String} skuId - SKU id
 */
export const getNewCartGoods = (skuId) => {
  return request(`/goods/stock/${skuId}`, 'get')
}

/**
 * 获取商品对应的sku
 * @param {String} skuId - SKU id
 */
export const getGoodsSku = (skuId) => {
  return request(`/goods/sku/${skuId}`, 'get')
}

/**
 * 合并购物车
 * @param {Array<object>} cartList -购物车从列表数据
 * @param {String} object.skuId - 商品skuId
 * @param {Boolean} object.selected - 是否选中
 * @param {Integer} object.count - 数量
 * @returns
 */
export const mergeCart = (cartList) => {
  return request('/member/cart/merge', 'post', cartList)
}

/**
 * 登录成功后 获取购物车列表
 */
export const findCart = () => {
  return request('/member/cart', 'get')
}

/**
 * 加入购物车
 * @param {String} skuId - 商品skuId
 * @param {Interger} count - 商品数量
 */
export const insertCart = ({ skuId, count }) => {
  return request('/member/cart', 'post', { skuId, count })
}

/**
 * 删除购物车
 * @param {String[]} ids - 商品skuId集合
 * 若批量删除，则数组中传入多个skuId；单个删除，则传入一个
 */
export const deleteCart = (ids) => {
  return request('/member/cart', 'delete', { ids })
}

/**
 * 修改购物车商品 支持状态或数量修改
 * @param {String} skuId - 商品skuId
 * @param {Interger} count - 商品数量
 * @param {Boolean} selected - 是否选中
 */
export const updateCart = ({ skuId, selected, count }) => {
  return request(`member/cart/${skuId}`, 'put', { selected, count })
}

/**
 * 全选与取消全选
 * @param {Boolean} selected - 全选或取消全选
 * @param {String[]} ids - skuId数组
 */
export const checkAll = ({ selected, ids }) => {
  return request('/member/cart/selected', 'put', { selected, ids })
}
